package compil;

import command.Anchor;
import command.Selector;
import common.CompilException;
import common.ParseException;

import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class CssClass implements CssElement {
    private ArrayList<String> selectors;
    private String anchor;
    private ArrayList<Value> anchorParams;
    private ArrayList<CssElement> elements;

    public CssClass() {
        selectors = new ArrayList<String>();
        anchorParams = new ArrayList<Value>();
        elements = new ArrayList<CssElement>();
    }

    public void addSelector(Selector selector) throws CompilException {
        if (anchor != null && anchor.length() > 0)
            throw new CompilException("В классе '" + anchor + "' объявления селекторов идут после задания анкора класса");
        this.selectors.add(selector.getParentFileString().getCommand());
    }

    public void setAnchor(Anchor cmdAnchor) throws CompilException {
        if (anchor != null && anchor.length() > 0)
            throw new CompilException("В классе '" + anchor + "' анкор уже задан");
        anchor = cmdAnchor.getLabelString().trim();

        System.out.println("Anchor: '" + anchor + "'");

        Pattern pattern = Pattern.compile("\\(.*\\)");
        Matcher matcher = pattern.matcher(cmdAnchor.getParamsString());

        if (matcher.find()) {
            String[] anchorParamsStr = matcher.group().trim().split(",");

            //System.out.println("Params: '" + labelString + "'");
        } else
            throw new CompilException("В классе '" + anchor + "' параметры объявлены не по шаблону: @@anchor(params)");


    }

    // Сюда передают параметры, а получают набор вычисленных полей
    public ArrayList<CssElement> calculateAnchor() {
        ArrayList<CssElement> elements = new ArrayList<CssElement>();

        return elements;
    }
}
